//缓存池的概念：

package com.hua.base;

public class IntegerDemo {
    public static void main(String[] args) {
        Integer x = new Integer(20);
        Integer y = new Integer(20);
        System.out.println(x==y);//false
        Integer x1 = Integer.valueOf(200);
        Integer y1 = Integer.valueOf(200); //200没在缓存池中，故会自动新建一个对象
        System.out.println(x1==y1); //true

        //new Integer(123) 每次都会新建一个对象；
        //Integer.valueOf(123) 会使用缓存池中的对象，多次调用会取得同一个对象的引用。
        //valueOf() 方法的实现比较简单，就是先判断值是否在缓存池中，如果在的话就直接返回缓存池的内容。
        //在 Java 8 中，Integer 缓存池的大小默认为 -128~127。编译器会在自动装箱过程调用 valueOf() 方法，
        //因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建，那么就会引用相同的对象。


        //基本类型对应的缓冲池如下：
        //boolean values true and false
        //all byte values
        //short values between -128 and 127
        //int values between -128 and 127
        //char in the range \u0000 to \u007F
        //在使用这些基本类型对应的包装类型时，如果该数值范围在缓冲池范围内，就可以直接使用缓冲池中的对象。
        //包装类不能被继承

    }



}
